OpenCV 에서 C++함수 imread 그림 읽 기 문제 및 해결 방법

2688 단어 opencvimreadc + +
오늘 OpenCV 로 Image Pyramid 를 실험 할 때 이상 한 문 제 를 발 견 했 습 니 다.C+함수 imread 를 이용 하여 그림 을 읽 을 때 돌아 오 는 결 과 는 항상 비어 있 지만 C 함수 cvLoadImage 를 이용 할 때 는 그림 을 읽 을 수 있 습 니 다.코드 는 다음 과 같 습 니 다:

//  :VS2010 + OpenCV 2.3.1
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
Mat src, dst, tmp;
char* window_name = "Pyramids Demo";
int _tmain(int argc, _TCHAR* argv[])
{
 printf("
Zoom In-Out demo
"); printf("--------------------
"); printf("*[u]-> Zoom in
"); printf("*[d]-> Zoom out
"); printf("*[ESC]-> Close program

"); src = imread("D:\\fruits.jpg"); if(!src.data) { printf("No data!--Exiting the program
"); return -1; } tmp = src; dst = tmp; namedWindow(window_name,CV_WINDOW_AUTOSIZE); imshow(window_name,dst); while(true) { int c; c = waitKey(10); if((char)c == 27) { break; } if((char)c == 'u') { pyrUp(tmp,dst,Size(tmp.cols * 2,tmp.rows * 2)); printf("** Zoom In:Image x 2
"); } else if((char)c == 'd') { pyrDown(tmp,dst,Size(tmp.cols / 2,tmp.rows / 2)); printf("**Zoom Out:Image / 2
"); } imshow(window_name,dst); tmp = dst; } return 0; }
프로그램 은 간단 합 니 다.Imgproc 의 C+함수 pyrUp 과 pyrDown 을 직접 호출 하여 이미지 피 라 미 드 를 실현 하 는 것 입 니 다.프로그램의 상세 한 설명 은 참고 할 수 있 습 니 다https://www.jb51.net/article/108378.htm.그러나 이 루어 지 는 과정 에서 imread 는 이미지 데이터 와 cvLoadImage 를 읽 을 수 없 음 을 발견 하 였 습 니 다.여러 차례 고증 을 거 쳐,확실히 창고 와 관련 된 문제 때 문 이라는 것 을 발견 하 였 다.즉,Debug 모드 에서'd'가 있 는 lib 를 선택해 야 하고 Release 모드 에서'd'가 없 는 lib 를 선택해 야 합 니 다.실제로 우 리 는 OpenCV 환경 을 설정 할 때 Debug 와 Release 의 디 렉 터 리 를 함께 넣 고 수정 하 는 것 도 비교적 번거롭다.그래서 이때 가장 쉬 운 방법 은 프로그램의 시작 에 더 하 는 것 이다.

#pragma comment(lib,"opencv_highgui231d.lib")
Debug 버 전의 라 이브 러 리 함 수 를 사용 할 것 임 을 알려 줍 니 다.
실험 결 과 는 다음 과 같다.

위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 OpenCV 에서 C++함수 imread 가 그림 을 읽 는 문제 와 해결 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기