Sử dụng Opencv C++

Mình đang lập trình tìm hiểu về sử dụng openCv, tìm biên của một bức ảnh với CODE khá đơn giản và ngắn gọn như bên dưới , (nó đã lấy của mình 2 ngày), giúp mình sửa lỗi sai

int main() {

	std::vector<std::vector<cv::Point> > contours;
	std::vector<cv::Vec4i> hierarchy;

	cv::Mat image;
	image = cv::imread("image1.jpg", CV_LOAD_IMAGE_ANYCOLOR);
	if (!image.empty()) {

		cv::cvtColor(image, image, CV_BGR2GRAY);
		cv::threshold(image, image, 100, 255, CV_THRESH_BINARY);
		cv::Mat image_contour = image.clone();
		imshow("as", image_contour);
		cv::findContours(image_contour, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
		imshow("asdld", image_contour);
		cvWaitKey(0);
	}
	else {
		std::cout << "ERROR" << std::endl;
	}
}
1 Like

BUMP ! BUMP!!! BUMP!!!
Giúp mình với

mình cũng đang làm về opencv, nhân dang vân tay, tt cơ sở,

  1. nên load ảnh chế độ rgb, 3 kênh màu, như trên bạn sẽ load thêm kênh anphal
    image = cv::imread(“image1.jpg”, CV_LOAD_IMAGE_COLOR);
  2. ngưỡng lên lấy = giá trị tb = 127, còn nếu ảnh k dùng ngưỡng cứng được thì phải tìm ngưỡng tự động( cái này tùy vào ảnh)
    cv::threshold(image, image, 127, 255, CV_THRESH_BINARY);
  3. hàm contour bạn phải nhị phân hóa ảnh ở chế độ bin inv nha, nó chỉ tìm theo viền trắng, như trên bạn nhị phân theo bin thôi
    cv::threshold(image, image, 127, 255, CV_THRESH_BINARY_INV);
  4. hàm contour có 2 prototype, như trên bạn dùng cái thứ 2 k có hierarchy, nên k cần khai báo

xem ở đây
http://docs.opencv.org/3.0-beta/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#findcontours
bản opencv 3.0.0 nha

cở sở của hàm contour
mình mới hỏi được trên diễn đàn

http://wenku.baidu.com/view/6cb52ede360cba1aa811dad5.html###

Mình sửa rồi , nhưng không biết sao khi Debug nó hiện hình ra nhưng sau đó lại xuất hiện cái bảng "DEBUG ASSERTION FAILED " rất oái ăm :confused:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?